import pandas as pd
import numpy as np

# # 1.1 一维对象的创建
# # 1、用字典创建
# dict_v = {'a':0, 'b':1, 'c':2, 'd':3, 'e':5}
# sr = pd.Series(dict_v)# 用字典创建对象
# print(sr)

# # 2、用链表创建
# # 定义键与值
# v = [0, 0.25, 0.5, 0.75, 1]
# k = ['a', 'b', 'c', 'd', 'e']
# sr2 = pd.Series(v, index= k)# 用链表创建对象
# print(sr2)

# # 3、数组创建法
# a3 = np.array([1, 2, 3, 4, 5])
# k3 = ['a', 'b', 'c', 'd', 'e']
# sr3 = pd.Series(a3) # 用数组创建对象
# print(sr3)

# # index如果不指定则默认为从'1'开始的序列

# # 1.2 一维对象的属性
# v1 = [53, 64, 72, 82]
# k1 = ["1号", "2号", "3号", "4号"]
# sr1 = pd.Series(v1, k1)
# print(f"sr1\nvalues: {sr1.values}\nindex: {sr1.index}\n{sr1}")
# # 无论用列表、数组还是张量创建对象，最终values均为数组


# 1.3 二维对象的创建

# # （1）字典创建法

# # 创建 sr1：各个病人的年龄
# v1 = [ 53, 64, 72, 82 ]
# i = [ '1 号', '2 号', '3 号', '4 号' ]
# sr1 = pd.Series( v1, index=i )
# # 创建 sr2：各个病人的性别
# v2 = [ '女', '男', '男', '女' ]
# i = [ '1 号', '2 号', '3 号', '4 号' ]
# sr2 = pd.Series( v2, index=i )
# # 创建 df 对象
# df1 = pd.DataFrame({"年龄":sr1, "性别":sr2})
# # 如果 sr1 和 sr2 的 index 不完全一致，那么二维对象的 index 会取 sr1 与 sr2的交集
# print(df1)

# # （2）数组创建法
# # 设定键值
# v2 = np.array( [ [53, '女'], [64, '男'], [72, '男'], [82, '女'] ] )
# i2 = [ '1 号', '2 号', '3 号', '4 号' ]
# c2 = [ '年龄', '性别' ]
# df2 = pd.DataFrame(v2, index= i2, columns= c2)
# print(df2)

# 1.4 二维对象的属性
# DataFrame 对象有三个属性：values、index 与 columns。
# 设定键值
v = [ [53, '女'], [64, '男'], [72, '男'], [82, '女'] ]
i = [ '1 号', '2 号', '3 号', '4 号' ]
c = [ '年龄', '性别' ]
df = pd.DataFrame(v, index= i, columns= c)
print(f"values:\n{df.values}\nindex: {df.index}\ncolumns:{df.columns}\n{df}")
# 提取完整的数组
arr = df.values
print(arr)
# 提取第[0]列，并转化为一个整数型数组
vector = arr[:, 0].astype(int)
print(vector)
